package com.cs.beneficios.web.action;
import com.cs.beneficios.business.entity.CargueDAO;
import com.cs.beneficios.business.model.CargueVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class InformacionAction extends Action
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
    
    ActionMessages messages = new ActionMessages();
    try{
        AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        
        //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
		ConnectionFactory cf = new ConnectionFactory();
        CargueVO objcargueVO = new CargueVO();
        String strnomcargue = request.getParameter("nombrecargue");
        String lote = request.getParameter("lote");
        String busco = request.getParameter("busco");
        String fechaInicial = request.getParameter("fechaInicial");
        String fechaFinal = request.getParameter("fechaFinal");
        
        request.removeAttribute("cargue");
        String search = request.getParameter("search");
        if((Object)search == null)
        {
          search = (String)request.getAttribute("search");
        }
        //if(busco == null)
        //{
        //  busco = "buscar";
        //}
        if((Object)lote == null)
        {
          lote = (String)request.getAttribute("lote");
          //busco = "buscar";
          search = "ok";
        }
        HttpSession session = request.getSession();

        String ingreso  = request.getParameter("ingreso");
        //request.removeAttribute("msg");
        Collection cargue = null;
        //Para la auditoria de registros
        UserVO user = (UserVO) session.getAttribute("userInfo");
        String terminalAddress = "WEB="+request.getRemoteAddr();
        if((Object)ingreso != null)
        {
          if(ingreso.equals("true"))
          {
              objcargueVO.setCode(request.getAttribute("lote").toString());
              CargueDAO objcargueDAO;
             /// request.removeAttribute("cargue");
              try{
              objcargueDAO = new CargueDAO(cf);
              cargue = objcargueDAO.findArchivoCargueByCriterea(objcargueVO);
              cf.closeConnection(objcargueDAO.getConn());
              }catch(Exception e){
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
              }
              
              if(cargue != null){
                if(cargue.size() > 0)
                {
                  request.setAttribute("cargue",cargue);
                }else{
                   request.setAttribute("msg","No se encontraron registros..");
                }
              }  
          }
        }
        
        if((Object)busco != null){
            if(busco.equals("buscar")){
              if(search !=null){
            
              objcargueVO.setCode(lote);
              objcargueVO.setNombre(strnomcargue.trim());
              objcargueVO.setFechaInicial(fechaInicial);
              objcargueVO.setFechaFinal(fechaFinal);
              CargueDAO objcargueDAO;
             /// request.removeAttribute("cargue");
              try{
              objcargueDAO = new CargueDAO(cf);
              cargue = objcargueDAO.findArchivoCargueByCriterea(objcargueVO);
              cf.closeConnection(objcargueDAO.getConn());
              }catch(Exception e){
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
              }
              
                if(cargue != null){
                  if(cargue.size() > 0)
                  {
                    request.setAttribute("cargue",cargue);
                  }else{
                     request.setAttribute("msg","No se encontraron registros..");
                  }
                }  
           }
          }/*else if(busco.equals("cargar"))
          {
            boolean cargar = false;
            try{
              CargueDAO objcargueDAO = new CargueDAO(cf);
              String code = request.getParameter("seleccionar").trim();
              cargar = objcargueDAO.uploadFile(Integer.valueOf(code).intValue());
              cf.closeConnection(objcargueDAO.getConn());
              }catch(Exception e){
                request.setAttribute("msg","Error de sql al cargar el archivo");
                e.printStackTrace();
              }
            if(cargar) request.setAttribute("msg","El archivo fue cargado satisfactoriamente.");
            else request.setAttribute("msg","Error al cargar el archivo, el archivo no existe!");
            
            String seleccionar = request.getParameter("seleccionar");
            if((Object)seleccionar != null && !seleccionar.equalsIgnoreCase(""))
            {
              objcargueVO.setCode(seleccionar);
              CargueDAO objcargueDAO;
             /// request.removeAttribute("cargue");
              try{
              objcargueDAO = new CargueDAO(cf);
              cargue = objcargueDAO.findArchivoCargueByCriterea(objcargueVO);
              cf.closeConnection(objcargueDAO.getConn());
              }catch(Exception e){
                e.printStackTrace();
              }
              
                if(cargue != null){
                  if(cargue.size() > 0)
                  {
                    request.setAttribute("cargue",cargue);
                  }else{
                     request.setAttribute("msg","No se encontraron registros..");
                  }
                }  
            }
            
          }*/else if (busco.equals("validar")){
            //boolean validar = false;
              try{
                CargueDAO objcargueDAO = new CargueDAO(cf);
                String code = request.getParameter("validar").trim();
                String tipoCargue = request.getParameter("tipoCargue");
                boolean mover = objcargueDAO.moveToCargarDatos(Integer.parseInt(code),tipoCargue,user.getName(),terminalAddress, user.getUserGroupName(), user.getCode().toString());
                if(mover)
                {
                  request.setAttribute("msg","El archivo fue cargado, para ver los registros no procesados haga clic en Regs. No procesados ");
                }else
                {
                  request.setAttribute("msg","El archivo no ha sido cargado aun, por favor hacer clic en cargar.");
                }
                String validar = request.getParameter("validar");
                if((Object)validar != null && !validar.equalsIgnoreCase(""))
                {
                  objcargueVO.setCode(validar);
                  try{
                  cargue = objcargueDAO.findArchivoCargueByCriterea(objcargueVO);
                  }catch(Exception e){
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
                  }
                  
                    if(cargue != null){
                      if(cargue.size() > 0)
                      {
                        request.setAttribute("cargue",cargue);
                      }else{
                         request.setAttribute("msg","No se encontraron registros..");
                      }
                    }  
                }
                cf.closeConnection(objcargueDAO.getConn());
              }catch(Exception e){
                request.setAttribute("msg","Error de sql al validar el archivo");
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
              }
          }
        }
        }catch (UserException ue) 
      {
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
      
    }
   
  
    return mapping.findForward("success");
  }
}